﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using LCTMoodle.Models.ViewModels;
using LCTMoodle.Helper;
using LCTMoodle.Models.DataModels;

namespace LCTMoodle.Service
{
    public class TraLoiService : Service
    {
        /// <summary>
        /// Thêm trả lời
        /// </summary>
        /// <param name="traLoi">Gồm mã câu hỏi, nội dung, mã người tạo</param>
        /// <returns>Mã câu trả lời vừa thêm</returns>
        public static int themTraLoi(TraLoiDataModel traLoi)
        {
            return executeScalar<int>
                (
                    "themTraLoi",
                    new object[]
                    {
                        traLoi.maCauHoi,
                        traLoi.noiDung,
                        traLoi.maNguoiTao
                    }
                );
        }

        /// <summary>
        /// Lấy trả lời
        /// </summary>
        /// <param name="maTraLoi">Mã trả lời</param>
        public static TraLoiViewModel layTraLoiTheoMaTraLoi(int maTraLoi)
        {
            return executeDataReader<TraLoiViewModel>
                (
                    "layTraLoiTheoMaTraLoi",
                    new object[]
                    {
                        maTraLoi
                    }
                );
        }

        /// <summary>
        /// Lấy trả lời theo mã câu hỏi
        /// </summary>
        /// <param name="maCauHoi">Mã câu hỏi</param>
        /// <param name="tu">Từ dòng thứ...</param>
        /// <param name="den">Đến dòng thứ... (-1 nếu muốn lấy tất cả)</param>
        /// <returns></returns>
        public static List<TraLoiViewModel> layTraLoiTheoMaCauHoi(int maCauHoi, int tu, int den)
        {
            return executeDataReader_List<TraLoiViewModel>
            (
                "layTraLoiTheoMaCauHoi",
                new object[]
                {
                    maCauHoi,
                    tu,
                    (den == -1) ? (object)DBNull.Value : den
                }
            );
        }

        /// <summary>
        /// Xóa trả lời
        /// </summary>
        /// <param name="maTraLoi">Mã trả lời</param>
        public static bool xoaTraLoiTheoMaTraLoi(int maTraLoi)
        {
            return executeNonQuery
                (
                    "xoaTraLoiTheoMaTraLoi",
                    new object[]
                    {
                        maTraLoi
                    }
                );
        }

        /// <summary>
        /// Cập nhật đánh giá trả lời
        /// </summary>
        /// <param name="maTraLoi">Mã trả lời</param>
        /// <param name="giaTri">1: Tốt - -1: Xấu</param>
        /// <param name="maNguoiDung">Mã người dùng</param>
        public static bool capNhatDanhGiaTraLoi(int maTraLoi, int giaTri, int maNguoiDung)
        {
            return executeNonQuery
                (
                    "capNhatDanhGiaTraLoi",
                    new object[]
                    {
                        maTraLoi,
                        giaTri,
                        maNguoiDung
                    }
                );
        }

        /// <summary>
        /// Cập nhật trạng thái trả lời
        /// </summary>
        /// <param name="maTraLoi">Mã trả lời</param>
        /// <param name="trangThai">0: Bình thường - 1: Duyệt</param>
        public static bool capNhatTrangThaiTraLoi(int maTraLoi, int trangThai)
        {
            return executeNonQuery
                (
                    "capNhatTrangThaiTraLoi",
                    new object[]
                    {
                        maTraLoi,
                        trangThai
                    }
                );
        }
    }
}








































